package String;

/**
 * 给定一个字符串 s，它包含小写字母和数字字符，请编写一个函数，将字符串中的字母字符保持不变，而将每个数字字符替换为number。
 * 例如，对于输入字符串 "a1b2c3"，函数应该将其转换为 "anumberbnumbercnumber"。
 * 对于输入字符串 "a5b"，函数应该将其转换为 "anumberb"
 *
 * 输入：一个字符串 s,s 仅包含小写字母和数字字符。
 * 输出：打印一个新的字符串，其中每个数字字符都被替换为了number
 *
 * 样例输入：a1b2c3
 * 样例输出：anumberbnumbercnumber
 * 数据范围：1 <= s.length < 10000。
 */
public class ReplaceNumber {
    public static void main(String[] args) {
        String s = "a1b2c3";
        String s2 = "a5b";
        ReplaceNumber solution = new ReplaceNumber();
        System.out.println(solution.replaceNumber(s2));
    }
    public String replaceNumber(String s){
        //统计字符串中数字的个数
        int count = 0;
        char[] ori = s.toCharArray();
        for(int i = 0; i < ori.length; i++){
            if(Character.isDigit(ori[i])){
                count++;
            }
        }
        //扩容并迁移原始数组
        char[] newS = new char[s.length() + count * 5];
        int newSize = newS.length;
        for(int i = 0; i < ori.length; i++){
            newS[i] = ori[i];
        }
        //将数字替换成字符并从后向前拷贝
        for(int i = ori.length - 1, j = newSize - 1; i >= 0;i--){
            if(newS[i] >= '0' && newS[i] <= '9'){
                newS[j--] = 'r';
                newS[j--] = 'e';
                newS[j--] = 'b';
                newS[j--] = 'm';
                newS[j--] = 'u';
                newS[j--] = 'n';
            }else{
                newS[j--] = newS[i];
            }
        }
        return new String(newS);
    }
}
